package com.wjj.service;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wjj.dao.PayDao;
import com.wjj.entity.Groups;
import com.wjj.entity.Pay;
import com.wjj.entity.User;
import com.wjj.utils.DateUtil;
import com.wjj.utils.StringUtil;

@Service
public class PayServiceimpl implements PayService{
	@Autowired
	private PayDao dao;
	//列表
	@Override
	public PageInfo<Pay> selectPay(Integer pageNum, Pay pay) {
		PageHelper.startPage(pageNum, 3);
		List<Pay> list = dao.selectPay(pay);
		return new PageInfo<Pay>(list);
	}
	//找到所有的公司
	@Override
	public List<Groups> getCompany() {
		// TODO Auto-generated method stub
		return dao.getCompany();
	}
	//找到所有的事业部
	@Override
	public List<Groups> getGroups(Integer pid) {
		// TODO Auto-generated method stub
		return dao.getGroups(pid);
	}
	//添加发薪单
	@Override
	public void addPay(Pay pay) {
		String strFromDate = DateUtil.getStrFromDate(new Date(), "yyyyMMddHHmmss");
		String hiddenStr = StringUtil.hiddenStr(strFromDate, 3, 7);
		System.err.println(hiddenStr);
		pay.setCode(hiddenStr);
		dao.addPay(pay);
		//处理发薪单的名字
		String name = pay.getName();
		String hiddenStr2 = StringUtil.hiddenStr(name, 2);
		pay.setName(hiddenStr2);//除敏替换到我的发薪单的对象中
		if(pay!=null) {
			//发新单不为空的话
			//添加发薪人
			Integer id = pay.getId();//找到发信人的id
			List<User> users = pay.getUsers();//发信人的对象
			for (User user : users) {
				if(user != null) {
					//查找是否有发薪人
					User u = dao.selectUser(user);
					if(u != null) {
						//存在
						user.setId(u.getId());
					}else {
						//不存在
						//可以添加
						dao.addUser(user);
					}
				}
				//添加中间表
				dao.addPU(id,user.getId());
			}
		}
	}
	//回显对象
	@Override
	public Pay getPay(Integer id) {
		// TODO Auto-generated method stub
		return dao.getPay(id);
	}
	//查找所有的发薪人
	@Override
	public List<User> listtUser(Integer id) {
		// TODO Auto-generated method stub
		return dao.listtUser(id);
	}
	//发薪单
	@Override
	public void updatePay(Pay pay) {
		//修改发薪单
		dao.updatePay(pay);
		//修改的同时将中间表删除
		List<User> users = pay.getUsers();
		for (User user : users) {
			int i = dao.delPU(pay);
			if(i>0) {
				//删除成功后将发薪人添加景区
				//先判断发薪人是否存在
				User u = dao.selectUser(user);
				if(u != null) {
					//存在
					user.setId(u.getId());
				}else {
					//不存在
					//可以添加
					dao.addUser(user);
				}
			}
			dao.addPU(pay.getId(),user.getId());
		}
	}
}
